﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using Dominio;
using Negocio;
using System.Web.UI;
using System.Web.UI.WebControls;

public partial class ProfessorInserir : System.Web.UI.Page
{
    ProfessorVO vo;
    List<DisciplinaVO> dvo;
    bool inserirOUalterar;

    protected void Page_Load(object sender, EventArgs e)
    {
        if ((Request.QueryString.Count != 0) && (!IsPostBack))
        {
            vo = ProfessorNegocio.findByPrimaryKey(Convert.ToInt32(Request.QueryString["id"]));
            dvo = new List<DisciplinaVO>();
            dvo = PtdnNegocio.GetDisciplinasProf(vo.id);
            this.objetoToForm(vo);
            inserirOUalterar = false;

            
        }
        else
        {
            if (!IsPostBack)
            {
                
                lnkAlterar_Click(sender, e);
                lnkAlterar.Visible = false;
                lnkAlterarSenha.Visible = false;
                lblSenha.Visible = true;
                TextBoxSenha.Visible = true;
                ButtonSalvar.Visible = true;
                inserirOUalterar = true;

                lblDisciplinas.Visible = true;
                CheckBoxList1.Visible = true;
            }
        }
    }

    private void objetoToForm(ProfessorVO professor)
    {
        lblID.Text = professor.id.ToString();
        TextBoxMat.Text = professor.Matricula;
        TextBoxNome.Text = professor.Nome;
        if (professor.Sexo == Convert.ToChar("M")) RadioButtonList1.SelectedIndex = 0; else RadioButtonList1.SelectedIndex = 1;
        TextBoxEnd.Text = professor.Endereco;
        TextBoxFone.Text = professor.Telefone;
        TextBoxCPF.Text = professor.Cpf;
        TextBoxRG.Text = professor.Rg;
        TextBoxNasc.Text = professor.Dnascimento.ToShortDateString();
        TextBoxEmail.Text = professor.Email;
        TextBoxSenha.Text = professor.Senha;

        


    }

    private void formToObjecto()
    {
        if (vo == null)
            vo = new ProfessorVO();

        try
        {
            vo.id = Convert.ToInt32(lblID.Text);
        }
        catch (Exception)
        {
            vo.id = 0;
        }
        vo.Nome = TextBoxNome.Text;
        vo.Cpf = TextBoxCPF.Text;
        vo.Dnascimento = Convert.ToDateTime(TextBoxNasc.Text);
        vo.Matricula = TextBoxMat.Text;
        if (RadioButtonList1.SelectedIndex == 0) vo.Sexo = Convert.ToChar("M"); else vo.Sexo = Convert.ToChar("F");
        vo.Endereco = TextBoxEnd.Text;
        vo.Telefone = TextBoxFone.Text;
        vo.Rg = TextBoxRG.Text;
        vo.Email = TextBoxEmail.Text;
        vo.Senha = TextBoxSenha.Text;

        if (dvo == null)
            dvo = new List<DisciplinaVO>();

        List<string> selecionados = new List<string>();

        for (int i = 0; i < CheckBoxList1.Items.Count;i++ )
        {
            if (CheckBoxList1.Items[i].Selected)
                selecionados.Add(CheckBoxList1.Items[i].Text);
        }

        foreach (DisciplinaVO item in ObjectDataSource1.Select())
        {
            DisciplinaVO dis = new DisciplinaVO();
            foreach (string sel in selecionados)
            {
                if (sel == item.Nome)
                {
                    dis = item;
                    dvo.Add(dis);
                    break;
                }
            }  
            
            
        }      


    }

        protected void ButtonSalvar_Click(object sender, EventArgs e)
    {
        
        this.formToObjecto();

        //Manter Professor
        ProfessorNegocio.salvar(vo);
        if (TextBoxSenha.Text != "")
        {
            ProfessorNegocio.alterarSenha(vo);
        }

        //Associar Professor à disciplina
        if (inserirOUalterar)
        {
            int id = ProfessorNegocio.RetornarIDProfessor(vo.Matricula);
            PtdnNegocio.InserirDisciplinaProfessor(dvo, id, inserirOUalterar);
        }
        else
        {
            PtdnNegocio.InserirDisciplinaProfessor(dvo, vo.id, inserirOUalterar);
        }


        Response.Redirect("Professor.aspx");
    }
        protected void ButtonCancelar_Click(object sender, EventArgs e)
        {
            Response.Redirect("Professor.aspx");
        }
        protected void lnkAlterar_Click(object sender, EventArgs e)
        {
            TextBoxMat.ReadOnly = false;
            TextBoxNome.ReadOnly = false;
            RadioButtonList1.Enabled = true;
            TextBoxEnd.ReadOnly = false;
            TextBoxFone.ReadOnly = false;
            TextBoxCPF.ReadOnly = false;
            TextBoxRG.ReadOnly = false;
            TextBoxNasc.ReadOnly = false;
            TextBoxEmail.ReadOnly = false;
            TextBoxSenha.ReadOnly = false;

            lnkAlterarSenha.Visible = true;

            lblDisciplinas.Visible = true;
            CheckBoxList1.Enabled = true;

            ButtonSalvar.Visible = true;
        }
        protected void lnkAlterarSenha_Click(object sender, EventArgs e)
        {
            TextBoxSenha.Visible = true;
            lblSenha.Visible = true;
            ButtonSalvar.Visible = true;
        }

        protected void CheckBoxList1_DataBound(object sender, EventArgs e)
        {
            vo = ProfessorNegocio.findByPrimaryKey(Convert.ToInt32(Request.QueryString["id"]));
            dvo = new List<DisciplinaVO>();
            dvo = PtdnNegocio.GetDisciplinasProf(vo.id);
            inserirOUalterar = false;
            foreach (DisciplinaVO disvo in dvo)
            {
                for (int i = 0; i <= CheckBoxList1.Items.Count; i++)
                {
                    if (disvo.Nome == CheckBoxList1.Items[i].Text)
                    {
                        CheckBoxList1.Items[i].Selected = true;
                        break;
                    }
                }
            }
        }
}